#ifndef PURG_PURG_H
#define PURG_PURG_H


#include "combined_generator.h"
#include "serial_streams.h"
#include "sha1_stream.h"
#include "random_variable.h"


#ifdef PURG_USE_PTHREADS
#include "thread_safety.h"
#endif


#ifndef PURG_C_INTERFACE_COMPILE
namespace purg
{
#endif

  typedef  lcg_pow_2_tmpl<1664525,1013904223>    numerical_recipes_lcg_stream;
  typedef  lcg_pow_2_tmpl<1103515245,12345>      gcc_rand;

#ifdef PURG_USE_PTHREADS
  typedef thread_safety_stream<sha1_stream>      crypt_stream;
#else
  typedef sha1_stream                            crypt_stream;
#endif

  typedef  combined_generator_tmpl<crypt_stream , single_byte_stream_tmpl<0> >    parallel_gen;

#ifndef PURG_C_INTERFACE_COMPILE
}
#endif


#ifdef PURG_USE_SPRNG
#include "purg_sprng_interface.h"
#endif


#endif
